今天來 Networking 系列最後一間房間
上一篇提到的 Wireshark 和 Tcpdump 這兩個工具都是被動監聽網路封包的工具
今天要說的 Nmap 則是提供主動偵測網路的工具
在搜尋和監測網路上面有很多種方法,最常聽到的 ping、arp-scan是屬於發現網路上的裝置
而之前提到過的 telnet 則是發現裝置上開放的服務
而今天要說的 Nmap 可以滿足以上找主機、找服務這兩件事
用 Nmap 的好處:
- 同時進行主機發現與埠掃描
- 速度快
- 功能多樣
- OS偵測、版本偵測、腳本引擎(NSE)....
- 跨平台(Linux、Windows、macOS都可用)
他比 ping 更靈活,就算 ICMP 被阻擋也可以靠 TCP/ARP 偵測到主機的存在
指令示範
$ sudo nmap -sn 192.168.0.1-10 //掃描從192.168.0.1 到 192.168.0.10 的所有 IP 位址
$ sudo namp -sn 192.168.0.0/24 //掃描整個子網,相當於掃描 192.168.0.0 ~ 192.168.0.255
$ sudo nmap -sn example.thm //自動解析 example.thm 的 IP,然後對它進行掃描
/*-------多目標混合指定------*/
$ sudo nmap -sn 192.168.0.1,192.168.0.5,192.168.0.10 //以逗號分
$ sudo nmap -sn 192.168.0.1-10 example.com 10.0.0.0/24 //混合範例
/*-------補充-------*/
$ sudo nmap -sL 192.168.0.1/24 //列出要掃描的256個目標(僅列出目標不實計掃描)
掃描範圍 | 技術 | 優點 | 限制 |
---|---|---|---|
本地網路 | ARP 掃描 | 快、準確 | 只能用在同一個子網 |
遠端網路 | ICMP、TCP SYN/ACK、UDP 掃描 | 可跨網段、跨網際網路 | 可能被防火牆擋掉,速度慢 |
本地網路掃描 -> 直接用 -sn(ARP)就夠快夠準
遠端網路掃描 -> 多用 ICMP/TCP/UDP 探測,必要時指定 port,例如 -PS80,443
在上面我們用 -sn 發現了活躍中的主機,現在我們要監聽這些主機上的網路服務
$ nmap -sT 192.168.0.10
$ sudo nmap -sU 192.168.0.10
$ sudo nmap -sU 192.168.0.10
$ nmap -F 192.168.0.10 # 快速掃描
$ nmap -p 20-100 192.168.0.10 # 掃描 20~100
$ nmap -p 22,80,443 192.168.0.10 # 掃描指定 ports
$ nmap -p- 192.168.0.10 # 掃描所有 65535 個 TCP port
$ nmap -sS -o <target>
$ nmap -sS -sV [target]
$ nmap -sS -A [target]
$ nmap -sS -Pn [target]
Nmap 提供各種選項來控制掃描速度和時間
編號 | 名稱 | 特點 | 範例用途 |
---|---|---|---|
0 | 偏執型 (Paranoid) | 非常慢,每個 port 間長時間延遲 | 滲透測試隱蔽模式 |
1 | 鬼鬼祟祟 (Sneaky) | 慢,每兩個 port 間延遲 15 秒 | 避免 IDS/IPS 偵測 |
2 | 禮貌型 (Polite) | 速度中等,減少網路負載 | 適合共享網路環境 |
3 | 正常型 (Normal) | 預設速度 | 一般掃描 |
4 | 攻擊型 (Aggressive) | 快速掃描 | 本地網段或快速滲透測試 |
5 | 瘋狂型 (Insane) | 極快,幾乎不考慮隱蔽 | 高速內網掃描 |
T0-T1 -> 隱蔽,慢速,適合躲 IDS
T2-T3 -> 平衡,適合一般網路
T4-T5 -> 高速,適合內網快速掃描
並行探測 -> 對網路壓力敏感時使用
速率控制 -> 對網路壓力敏感時使用
host-timeout -> 適用慢速或遠端主機
指令範例
$ sudo nmap -sS -T1 --max-rate 50 192.168.0.10 //使用 T1 模板、限制速率為每秒 50 封包
$ sudo nmap -sS -F --max-parallelism 10 192.168.0.10 //快速掃描 100 個常見端口,並行探測數量最多 10
$ sudo nmap -sS -Pn --host-timeout 5m 192.168.0.10 //強制單主機掃描,超時設定5分鐘
實時觀察掃描進度:使用 -v,掃描時可看到每個階段的即時進度
範例:
$ sudo nmap -sS 192.168.139.1/24 -v
$ sudo nmap -sS 192.168.139.1 -vv -d3
選項 | 格式 | 說明 |
---|---|---|
-oN <filename> |
Normal | 可讀性人性化輸出 |
-oX <filename> |
XML | 適合程式解析或自動化分析 |
-oG <filename> |
Grepable | 適合用 grep / awk 處理 |
-oA <basename> |
All | 同時輸出三種主要格式 (.nmap 、.xml 、.gnmap ) |
$ sudo nmap -sS 192.168.139.1 -oA gateway
# 產生三個檔案:
# gateway.nmap -> 普通輸出
# gateway.xml -> XML 輸出
# gateway.gnmap -> grep-able 輸出
$ sudo nmap -sS 192.168.139.1/24 -v -oA network_scan //詳細輸出 + 儲存報告
$ sudo nmap -sS 192.168.139.1 -vv -d3 -oN debug_scan.nmap //偵錯 + 詳細輸出
到現在已經說了三個網路分析工具了,現在來做一下簡單的對比
功能 | TCPdump | Wireshark | Nmap |
---|---|---|---|
封包捕獲 | ✅ | ✅ | ❌ |
封包分析 | 基本 | ✅ 詳細 | ❌ |
掃描主機/端口 | ❌ | ❌ | ✅ |
服務/版本偵測 | ❌ | ❌ | ✅ |
作業系統偵測 | ❌ | ❌ | ✅ |
命令列操作 | ✅ | 部分支援 | ✅ |
GUI操作 | ❌ | ✅ | ❌ |
遠端操作 | ✅ | 部分 | ✅(透過 SSH 或 Nmap 輸出) |
適合教學/實驗 | ✅ CLI 基礎 | ✅ GUI 詳細 | ✅ 安全測試、掃描 |
12:06了 可惡😱
跳戰失敗😭